package main

import "fmt"

//实现函数double Power(double base, int exponent)，求base的exponent次方。不得使用库函数，同时不需要考虑大数问题。
//示例 1:
//输入: 2.00000, 10
//输出: 1024.00000
//示例2:
//输入: 2.10000, 3
//输出: 9.26100
//示例3:
//输入: 2.00000, -2
//输出: 0.25000
//解释: 2-2 = 1/22 = 1/4 = 0.25

//当 x = 0 时：直接返回 0 （避免后续 x = 1 / x 操作报错）。
//初始化 res = 1 ；
//当 n < 0 时：把问题转化至 n \geq 0n≥0 的范围内，即执行 x=1/x ，n=−n ；
//循环计算：当 n = 0 时跳出；
//当 n & 1 = 1时：将当前 x 乘入res （即res∗=x ）；
//执行 x = x^2（即 x *= x；
//执行 n 右移一位（即 n >>=1）。

// 降低指数，提高底数部分内容

func myPow(x float64, n int) float64 {
	var res float64=1.000
	if n<0 {
		x = 1/x
		n=-n
	}
	for n!=0{
		if n%2 == 1 {
			res*=x
		}
		x*=x
		n>>=1
	}
	return res
}

func main(){
	fmt.Println(myPow(2.000,10))
}